import router from './index'
import store from '../store'
import {indexPage, loginPage, siteTitle,clientId,clientSecret} from "@/config/config";
import Vue from "vue";
import ViewUI from 'view-design';

const whiteList = ['/login', '/forget-password'] // 无需权限路由集合

router.beforeEach(async(to, from, next) => {
  // 开始加载进度条
  ViewUI.LoadingBar.start()
  // 设置页面title
  document.title = to.meta.title+' -'+siteTitle
  // 确定用户是否已登录
  const isLogin = store.getters.isLogin
  if (isLogin&&'false'!==isLogin) { // 判断是否有token
    console.log('isLogin:',isLogin)
    if (to.path === '/login') {
      // 如果已登录，重定向到主页
      next({ name: indexPage })
      // 停止加载进度条
      ViewUI.LoadingBar.finish()
    } else {
      // 确定用户是否已通过getInfo获得其权限角色
        let item = {
          fullPath: to.fullPath,
          meta: to.meta,
          name: to.name,
          path: to.path
        }
        // 增加tab多页签数据
        await store.dispatch('tagsView/pushRouter', item)
        next()
    }
  } else {
    /* 没有 token*/
    if ((whiteList.indexOf(to.path) !== -1)||to.query.code) {
      // 免权限直接进入
      if (to.query.code){
        store.dispatch('user/getToken',
            {code:to.query.code,
              clientId: clientId,
              clientSecret: clientSecret
            }
        ).then(() => {
          next({name: indexPage})
        })
      }else{
        next()
      }
    } else {
      // 其他无权访问的页面将重定向到登录页面
      if (!sessionStorage.getItem('userToken')){
         next({name: loginPage,query: { clientId: clientId }})
      }
      // 停止加载进度条
      ViewUI.LoadingBar.finish()
    }
  }
})

router.afterEach((to) => {
  // 停止加载进度条
  ViewUI.LoadingBar.finish()
  // 路由切换 滚到到顶部
  window.scrollTo(0, 0);
  if(to.name !== loginPage&&!to.query.code){
    // 如果不是登录页 内容区域滚动到顶部
    Vue.nextTick(() => {
      if (document.getElementById('main_content')) {
        document.getElementById('main_content').scrollTo(0, 0);
      }
    })
  }
})
